namespace ModelGenerator.RepositoryGenerator.Strategies
{
    public interface ICompareStrategy
    {
        string GetMethodNameTemplate();
        string CriterionMethod();
        string getDescription();
    }

    public class LowerStrategy : ICompareStrategy {
        public string GetMethodNameTemplate()
        {
            return "FindBy{0}LowerThan";
        }

        public string CriterionMethod()
        {
            return "Lt";
        }

        public string getDescription()
        {
            return "lower than";
        }
    }

    public class LowerEqualStrategy : ICompareStrategy
    {
        public string GetMethodNameTemplate()
        {
            return "FindBy{0}LowerOrEqual";
        }

        public string CriterionMethod()
        {
            return "Le";
        }

        public string getDescription()
        {
            return "lower or equal than";
        }
    }

    public class GreaterStrategy : ICompareStrategy
    {
        public string GetMethodNameTemplate()
        {
            return "FindBy{0}GreaterThan";
        }

        public string CriterionMethod()
        {
            return "Gt";
        }

        public string getDescription()
        {
            return "greater than";
        }
    }

    public class GreaterOrEqualStrategy : ICompareStrategy
    {
        public string GetMethodNameTemplate()
        {
            return "FindBy{0}GreaterOrEqual";
        }

        public string CriterionMethod()
        {
            return "Ge";
        }

        public string getDescription()
        {
            return "greater or equal than";
        }
    }
}